home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 November / CHIP Kasım 1996.iso / ms / webpost / wpsdk.exe / RCDATA / CABINET / WBPROV.H < prev    next >
C/C++ Source or Header  |  1996-07-08  |  7KB  |  277 lines

  1. /*****************************************************************/
  2. /**               Microsoft Windows 4.00                        **/
  3. /**           Copyright (C) Microsoft Corp., 1995-1996          **/
  4. /*****************************************************************/
  5.  
  6. /* WPTEST.H - Test provider with COM interface
  7.  *
  8.  */
  9.  
  10. #define WIN32_LEAN_AND_MEAN
  11.  
  12. #include <windows.h>
  13. #include <regstr.h>
  14.  
  15. #include <wpapi.h>
  16. #include  <wpspi.h>
  17.  
  18. //
  19. // Important defines
  20. //
  21.  
  22. #define ARRAYSIZE(a)    (sizeof(a)/sizeof(a[0]))
  23.  
  24. #define DATASEG_PERINSTANCE     ".instance"
  25. #define DATASEG_SHARED          ".data"
  26. #define DATASEG_READONLY         ".code"
  27. #define DATASEG_DEFAULT     DATASEG_SHARED
  28.  
  29. #pragma data_seg(DATASEG_PERINSTANCE)
  30.  
  31. extern HANDLE hInstance;
  32.  
  33. // Set the default data segment
  34. #pragma data_seg(DATASEG_DEFAULT)
  35.  
  36. //
  37. // Module ref counting
  38. //
  39. extern UINT g_cRefThisDll;
  40. extern UINT g_cLocks;
  41.  
  42. extern void LockThisDLL(BOOL fLock);
  43. extern void RefThisDLL(BOOL fRef);
  44.  
  45. //
  46. // Class definition for factory.
  47. // Nb: This is not needed for first release, but will be needed as
  48. // more COM functionality will be packaged inside provider
  49. //
  50. class WPPClassFactory : public IClassFactory
  51. {
  52. public:
  53.     STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppv);
  54.     STDMETHODIMP_(ULONG) AddRef(void);
  55.     STDMETHODIMP_(ULONG) Release(void);
  56.  
  57.     STDMETHODIMP CreateInstance(
  58.             /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
  59.             /* [in] */ REFIID riid,
  60.             /* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
  61.  
  62.     STDMETHODIMP LockServer(
  63.             /* [in] */ BOOL fLock);
  64. };
  65.  
  66.  
  67. //
  68. // Class definition for provider object
  69. // Nb: This is not needed for first release, but will be needed as
  70. // more COM functionality will be packaged inside provider
  71. //
  72.  
  73. class WPProvider : public IWPProvider
  74. {
  75.  
  76. private:
  77.     ULONG m_cRef;
  78.  
  79.     WPProvider();
  80.     ~WPProvider();
  81.  
  82. public:
  83.     // *** IUnknown methods ***
  84.     STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
  85.     STDMETHODIMP_(ULONG) AddRef(void);
  86.     STDMETHODIMP_(ULONG) Release(void);
  87.  
  88.     // *** Specific functions ***
  89. };
  90.  
  91.  
  92. //
  93. // Class definition for site object
  94. //
  95.  
  96. class WPPSiteA : public IWPSiteA
  97. {
  98. friend dllexp HRESULT WINAPI WppBindToSiteA(HWND hwnd1,
  99.                         LPCSTR   lpszSiteName,
  100.                         LPCSTR   lpszURL,
  101.                         REFIID riid,
  102.                         DWORD    dwFlag,
  103.                         DWORD    dwReserved,
  104.                         PVOID * ppvObj);
  105.  
  106. friend dllexp HRESULT WINAPI WppListSitesA(
  107.                         LPDWORD            lpcbSites,
  108.                         LPWPSITEINFOA    lpSiteInfo,
  109.                         LPDWORD            lpcSites);
  110.  
  111. friend dllexp HRESULT WINAPI WppDeleteSiteA(
  112.                         LPCSTR    lpszSiteName);        
  113.  
  114. private:
  115.     ULONG   m_cRef;
  116.     BOOL    m_fValid;
  117.     WPPSiteA *m_pDefaultSite;
  118.  
  119.     WPPSiteA(LPCSTR lpszSiteName, LPCSTR lpszURL);
  120.     ~WPPSiteA();
  121.  
  122.     BOOL inline IsValid(VOID) {
  123.         return m_fValid;
  124.     }
  125.  
  126. public:
  127.     // *** IUnknown methods ***
  128.     STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
  129.     STDMETHODIMP_(ULONG) AddRef(void);
  130.     STDMETHODIMP_(ULONG) Release(void);
  131.  
  132.     // *** Specific functions ***
  133.     STDMETHOD(GetSiteInfo) (THIS_ 
  134.                             LPWPSITEINFOA lpSiteInfo, 
  135.                             LPDWORD lpcbSiteInfo) ;
  136.     STDMETHOD(NetworkConnect) (THIS_ 
  137.                                 LPCSTR lpszUserName, 
  138.                                 LPCSTR lpszPassword) ;
  139.     STDMETHOD(NetworkDisconnect) (THIS_ ) ;
  140.     STDMETHOD(ServerLogin) (THIS_ 
  141.                             LPCSTR lpszUserName, 
  142.                             LPCSTR lpszPassword) ;
  143.     STDMETHOD(ServerLogout) (THIS_ ) ;
  144.     STDMETHOD(PostFiles) (THIS_ 
  145.                             DWORD     cLocalPaths, 
  146.                             LPSTR     *lppszLocalPaths, 
  147.                             LPDWORD    lpcbURL,
  148.                             LPSTR    lpszURL,
  149.                             DWORD     dwFlag) ;
  150.     STDMETHOD(DeleteFile) (THIS_
  151.                             LPCSTR    lpszFile) ;
  152.     STDMETHOD(FindFirstFile) (THIS_
  153.                                 LPCSTR lpszSearchFile,
  154.                                 LPWIN32_FIND_DATAA lpFindFileData,
  155.                                 LPHANDLE lpSearchHandle) ;
  156.     STDMETHOD(FindNextFile) (THIS_
  157.                                 HANDLE hSearchHandle,
  158.                                 LPWIN32_FIND_DATA lpFindFileData) ;
  159.     STDMETHOD(FindClose) (THIS_
  160.                             HANDLE hSearchHandle) ;    
  161.     STDMETHOD(Commit) (THIS_ ) ;
  162.     STDMETHOD(GetParam) (THIS_ 
  163.                             LPCSTR     lpszParameter,
  164.                             LPDWORD    lpcchValue,
  165.                             LPSTR    lpszValue) ;
  166.     STDMETHOD(SetParam) (THIS_ 
  167.                             LPCSTR    lpszParameter,
  168.                             LPCSTR    lpszValue) ;
  169.     STDMETHOD(GetError) (THIS_
  170.                             LPDWORD    lpdwErrorType,
  171.                             LPDWORD    lpdwErrorCode,
  172.                             LPDWORD    lpcbError,
  173.                             LPSTR    lpszError) ;
  174.     STDMETHOD(AddWizardPages) (THIS_ 
  175.                                 LPVOID lpv,
  176.                                 LPFNADDPROPSHEETPAGE lpfnAdd, 
  177.                                 LPARAM lParam) ;
  178. };
  179.  
  180. class WPPSiteW : public IWPSiteW
  181. {
  182. friend dllexp HRESULT WINAPI WppBindToSiteW(HWND hwnd1,
  183.                         LPCWSTR   lpszSiteName,
  184.                         LPCWSTR   lpszURL,
  185.                         REFIID riid,
  186.                         DWORD    dwFlag,
  187.                         DWORD    dwReserved,
  188.                         PVOID * ppvObj);
  189.  
  190. friend dllexp HRESULT WINAPI WppListSitesW(
  191.                         LPDWORD            lpcbSites,
  192.                         LPWPSITEINFOW    lpSiteInfo,
  193.                         LPDWORD            lpcSites);
  194.  
  195. friend dllexp HRESULT WINAPI WppDeleteSiteW(
  196.                         LPCWSTR    lpszSiteName);        
  197.  
  198. private:
  199.     ULONG   m_cRef;
  200.     BOOL    m_fValid;
  201.     WPPSiteW *m_pDefaultSite;
  202.  
  203.     WPPSiteW(LPCWSTR lpszSiteName, LPCWSTR lpszURL);
  204.     ~WPPSiteW();
  205.  
  206.     BOOL inline IsValid(VOID) {
  207.         return m_fValid;
  208.     }
  209.  
  210. public:
  211.     // *** IUnknown methods ***
  212.     STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
  213.     STDMETHODIMP_(ULONG) AddRef(void);
  214.     STDMETHODIMP_(ULONG) Release(void);
  215.  
  216.     // *** Specific functions ***
  217.     STDMETHOD(GetSiteInfo) (THIS_ 
  218.                             LPWPSITEINFOW lpSiteInfo, 
  219.                             LPDWORD lpcbSiteInfo) ;
  220.     STDMETHOD(NetworkConnect) (THIS_ 
  221.                                 LPCWSTR lpszUserName, 
  222.                                 LPCWSTR lpszPassword) ;
  223.     STDMETHOD(NetworkDisconnect) (THIS_ ) ;
  224.     STDMETHOD(ServerLogin) (THIS_ 
  225.                             LPCWSTR lpszUserName, 
  226.                             LPCWSTR lpszPassword) ;
  227.     STDMETHOD(ServerLogout) (THIS_ ) ;
  228.     STDMETHOD(PostFiles) (THIS_ 
  229.                             DWORD     cLocalPaths, 
  230.                             LPWSTR     *lppszLocalPaths, 
  231.                             LPDWORD    lpcbURL,
  232.                             LPWSTR    lpszURL,
  233.                             DWORD     dwFlag) ;
  234.     STDMETHOD(DeleteFile) (THIS_
  235.                             LPCWSTR    lpszFile) ;
  236.     STDMETHOD(FindFirstFile) (THIS_
  237.                                 LPCWSTR lpszSearchFile,
  238.                                 LPWIN32_FIND_DATAW lpFindFileData,
  239.                                 LPHANDLE lpSearchHandle) ;
  240.     STDMETHOD(FindNextFile) (THIS_
  241.                                 HANDLE hSearchHandle,
  242.                                 LPWIN32_FIND_DATAW lpFindFileData) ;
  243.     STDMETHOD(FindClose) (THIS_
  244.                             HANDLE hSearchHandle) ;    
  245.     STDMETHOD(Commit) (THIS_ ) ;
  246.     STDMETHOD(GetParam) (THIS_ 
  247.                             LPCWSTR     lpszParameter,
  248.                             LPDWORD    lpcchValue,
  249.                             LPWSTR    lpszValue) ;
  250.     STDMETHOD(SetParam) (THIS_ 
  251.                             LPCWSTR    lpszParameter,
  252.                             LPCWSTR    lpszValue) ;
  253.     STDMETHOD(GetError) (THIS_
  254.                             LPDWORD    lpdwErrorType,
  255.                             LPDWORD    lpdwErrorCode,
  256.                             LPDWORD    lpcbError,
  257.                             LPWSTR    lpszError) ;
  258.     STDMETHOD(AddWizardPages) (THIS_ 
  259.                                 LPVOID lpv,
  260.                                 LPFNADDPROPSHEETPAGE lpfnAdd, 
  261.                                 LPARAM lParam) ;
  262. };
  263.  
  264.  
  265. //
  266. // Syncronization mechanisms
  267. //
  268. void Netlib_EnterCriticalSection(void);
  269. void Netlib_LeaveCriticalSection(void);
  270. #ifdef DEBUG
  271. extern BOOL g_fCritical;
  272. #endif
  273. #define ENTERCRITICAL   Netlib_EnterCriticalSection();
  274. #define LEAVECRITICAL   Netlib_LeaveCriticalSection();
  275. #define ASSERTCRITICAL  ASSERT(g_fCritical);
  276.  
  277.